////////////////////////////////////////////////////////////////////////////////
/// Name: equipment.h
/// Author: B. Gian James <gian@BattleDroids.net>
/// Description: This file contains the equipment ID's and relevant structures
///              needed to encapsulate the Battle Droid's equipment components.
/// $Id: equipment.h,v 1.2 2009/08/28 22:55:17 gian Exp $
///////////////////////////////////////////////////////////////////////////////
#pragma once
#include "common.h"


/////////////////////////////////////////////////// Power Source
#define PWR_BIODIESEL	1
#define PWR_NUCLEAR		2
#define PWR_COLD_FUSION	3
#define	PWR_ANTIMATTER	4
#define PWR_DARKMATTER	5
#define PWR_OMEGAGEN	6

//////////////////////////// Power Source Upgrades
#define PWR_UPG_ANR		1	// Active Noise Reduction Engine
#define PWR_UPG_LEADSHLD 2
#define PWR_UPG_TURBO	3
#define PWR_UPG_JUMPJET	4
#define PWR_UPG_INERTDAMP	5
#define PWR_UPG_XTRACORE	6
#define PWR_UPG_SOLAR	7	// solar backup
#define PWR_UPG_NANOPWR	8	// energy use reduction
#define PWR_UPG_PICOPWR	9

/////////////////////////////////////////////////// Armor
#define ARMR_COMPOSITE	1
#define ARMR_REACTIVE	2
#define ARMR_ABLATIVE	3
#define ARMR_BIO_ORGANIC	4
#define ARMR_POLARIZED	5


///////////////////////////// Armor Upgrades
#define ARMR_UPG_NANO_POLYMER	1
#define ARMR_UPG_ANGSTROM_HULL	2
#define ARMR_UPG_QUANTUM_ALLOY	3
#define ARMR_UPG_DARK_MATTER_COAT 4
#define	ARMR_UPG_STRUCT	5

/////////////////////////////////////////////////// Computers
////////////// Central Core
#define CPU_512B_STANDARD	1
#define CPU_CLUSTERED		2
#define CPU_NEURAL_NET		3
#define CPU_BOAST			4 // Binary Open Architecture System Transceiver
#define CPU_TOAST			5 // Ternary " "
#define CPU_QUANTUM			6

////////////// Targeting
#define CPU_TGT_STANDARD	1
#define CPU_TGT_ALCGS		2	// Adaptive Logic Combat Guidance System

////////////// Defensive
#define	CPU_DEF_INTRUSION	1
#define CPU_DEF_ACTIVE_DENIAL		2
#define CPU_DEF_CLOAKING	3
#define CPU_DEF_WAVEBUBBLE	4	// destroys communications/jammer


///////////////////////////// Computer Upgrades
#define CPU_UPG_DISTRIBUTED_CORE	1
#define CPU_UPG_SENTIENT_AI			2
#define CPU_UPG_AUTOCOLLIDE	3
#define CPU_UPG_COMMARRAY	4	// increase # friendly units
#define CPU_UPG_NANOBOTS	5	// reprogram damage

////////////////////////////////////////////////// Components
////////////// Shields
#define SHIELD_EMP			1
#define SHIELD_FORCE		2
#define SHIELD_GRAVITON		3

////////////// Sensors
#define SENSOR_MK1		1	// Define how many *hardware* sensors
#define SENSOR_MK2		2
#define SENSOR_MK3		3

#define SCAN_THERMAL	1
#define SCAN_SONAR		2
#define SCAN_VISUAL		3
#define SCAN_EMF		4
#define SCAN_STRUCTURE	5


// HEATSINK!


typedef struct StatBonus_t
{
	uint8		id:5;		// ID of the bonus
	uint8		bonus:3;	// the bonus modifier
	uint8		stat;		// the stat it modifies
	struct StatBonus_t	* next;

} StatBonus;

typedef struct
{
	uint8		id:7;		// ID of the upgrade
	uint8		have:1;		// upgrade purchased?
	StatBonus	bonus;

} EquipmentUpgrade;


typedef struct _de
{
	uint8		id;			// Equipment ID
	StatBonus	bonus;		// Any bonuses it grants
	uint8		weight;		// encumbrance
	uint8		mount;		// mount point

	EquipmentUpgrade * upgrades;	// list of upgrades
	struct _de * next;

} DroidEquipment;

